home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / theory / evolutio / evolutio.txt < prev   
Internet Message Format  |  1995-03-24  |  23KB

  1. From: nak@cbnews.cb.att.com (neil.a.kirby)
  2. Newsgroups: rec.games.programmer
  3. Subject: LONG: Intelligent Computer Play -> Paper
  4. Date: 24 Jul 91 15:08:10 GMT
  5.  
  6. The following paper was given at the 1991 Computer Game Designers
  7. Conference.
  8.  
  9. Copyright 1991 Neil Kirby
  10. All rights reserved.
  11.  
  12.  
  13. Intelligent Behavior Without AI:
  14. An Evolutionary Approach
  15.  
  16. Copyright 1991 Neil Kirby
  17.  
  18. Introduction
  19. This paper describes a way to give intelligent behavior to computer 
  20. operated objects.  It traces the evolutionary approach used in the "Auto" 
  21. program of the "Bots" family of games.  The Bots system is described to 
  22. provide a context, and the results of each step in the evolution are 
  23. discussed.  While the changes made are particular to the Auto program, 
  24. the method is applicable to other programs.  The fundamentals of the 
  25. method are:
  26.     1.  Analyze good and bad behaviors.
  27.     2.  Quantify parameters to new algorithms.
  28.     3.  Apply constant evolutionary pressures by repeatedly testing.
  29. The method has proven to be quite successful.  The Auto program has 
  30. progressed from hopelessly poor play to well above average play skills 
  31. without any formal AI methods.
  32.  
  33. The Basic Approach
  34. The basic approach greatly resembles classical Darwinistic evolution.  
  35. Start with simplistic behavior, however bad.  Simple behavior is best 
  36. described as whatever is easiest to code.  Analyze the failures of the 
  37. simple methods.  If available, observe the differences between successful 
  38. behavior, especially that of human players, and the failures of the 
  39. computer players.  The most difficult step is to identify the parameters 
  40. that can be used to control successful behavior.  Once this has been 
  41. done, use regular code to allow the program to react to these parameters.  
  42. The process is completed by repeatedly testing in play.  The ease of fast, 
  43. repeated play afforded by computerization accelerates the process.  This 
  44. approach is easily observed in the Auto program.
  45.  
  46. The Bots Family of Games
  47. The Auto, Aero, and Bots programs make up the Bots family of 
  48. multiplayer, tactical ground and air combat games.  These run under the 
  49. Unix System VTM operating system and are written entirely in the C 
  50. programming language.  Bots and Auto deal with futuristic ground combat 
  51. units loosely comparable to tanks while Aero deals with flying futuristic 
  52. aircraft.  The Bots and Aero programs are used by human players and 
  53. Auto is the computer managed equivalent to Bots.  The Bots family of 
  54. games supports but does not require team play.  
  55.  
  56. Since the  Bots family are multiple player, multiple process games, events 
  57. are performed simultaneously.  A unit can find out the actions of other 
  58. units only after committing its own actions.  The events that make up a 
  59. turn are motion, followed by active fire, and ending with passive fire.  After 
  60. every ten turns, repair and resupply are made available to a unit.  The 
  61. manner in which a unit conducts its motion and fire are strongly 
  62. influenced by the construction of the unit.
  63.  
  64. Building a Unit
  65. The units used in Bots and Auto are built according to the tastes of the 
  66. player running them.  A unit has six armor facings protecting its internal 
  67. systems from damage.  Armor is ablative; each point of damage reduces 
  68. the amount of armor by one.  Once a given armor facing is reduced to 
  69. zero, all remaining damage is applied to the internal systems.  There are a 
  70. number of internal systems to protect: life support, control, chassis, 
  71. reactor, batteries, hardpoints, weapons, and ammunition.  Each has a 
  72. cost and weight associated with it, forcing economic compromises to be 
  73. made to build a unit to meet a given cost.  The mobility of a unit is based 
  74. on the amount of power available and the current mass of the unit, both of 
  75. which can change in play.  
  76.  
  77. Weapons
  78. There are a variety of weapons systems available, each with different 
  79. characteristics.  Weapons that require ammunition usually need little 
  80. power while power-based weapons require much more.  The lasers are 
  81. relatively light in mass, short-range, and power hungry.  Mortars have a 
  82. minimum range and require heavy ammunition, but they also have a long 
  83. maximum range and do not require line of sight to fire.  Autocannon inflict 
  84. moderate damage to moderate ranges, but they too, require a large 
  85. amount of moderately heavy ammunition.  Miniguns are lighter, smaller, 
  86. short-range versions of the autocannon.  Missiles have varying ranges 
  87. and warheads, but they can be shot down by point defenses, and they too, 
  88. are heavy.  Particle beam weapons are highly effective in a narrowly 
  89. focused range.  Aside from mortars, missiles, and particle beams, most 
  90. weapons improve as range shortens.
  91.  
  92. The non-offensive weapons systems are stealth, missile defense, and 
  93. hardpoints.  Stealth, which is expensive,  allows a unit to approach others 
  94. and remain unseen.  Missile defense attempts to shoot down incoming 
  95. missiles.
  96.  
  97. Hardpoints are mounts for optional, single-shot items.  The most common 
  98. hardpoint load is a jump pack.  Jump packs allow a unit to jump over 
  99. obstacles such as water.  They increase the mobility of a unit greatly but 
  100. can only be used once.  The other common hardpoint load is an anti-
  101. aircraft missile.
  102.  
  103. Play Balance (Rock, Paper, Scissors)
  104. The selection of a weapon determines much about the unit.  Units with 
  105. long-range weapons usually require heavy ammunition.  Their great 
  106. weight means limited mobility.  Limited mobility implies an inability to 
  107. escape from units with high mobility and short-range weapons.  It is 
  108. axiomatic that short-range weapons require high mobility.  Therefore, 
  109. short-range weapons must be light to be effective.  These trade-offs are 
  110. required for play balance among a wide diversity of systems.  Mortar 
  111. units, for example, were popular on teams but few people actually wanted 
  112. to play them.
  113.  
  114. To be successful in play, a unit must maneuver effectively, fire its 
  115. weapons, and evade enemy fire.  It should distribute enemy fire across 
  116. multiple armor facings.  If team mates are present, a unit should 
  117. coordinate fire among the team members to combine fire against single 
  118. enemy units.  If a unit takes damage, it should flee until it is repaired.  The 
  119. richness of detail in the Bots family of games is comparable to that of Star 
  120. Fleet BattlesTM.
  121.  
  122. Auto units are not allowed to cheat, so the behavior code cannot access 
  123. information that a human player in the same situation would not have.  The 
  124. advantage of access to hidden data was considered at first, but has 
  125. proven to be unnecessary.  No Auto program was written for Aero units.  
  126. The success of Auto units on the ground removed all demand for an Auto 
  127. equivalent to Aero.
  128.  
  129. The Original Algorithm
  130. The original algorithm for Autos was quite simple.  The closest enemy unit 
  131. was selected as the target.  All other units were ignored.  The Auto turned 
  132. to face the enemy and attempted to close.  (See Figure 1)  After 
  133. maneuvers were complete, the unit attempted to fire its weapons.  The fire 
  134. target was the closest enemy within the arc of the weapons fire.  The unit 
  135. would not flee if damaged.  The unit would not jump unless blocked by 
  136. water, buildings, or steep slopes.  
  137.  
  138. Spreading Out Damage
  139. There were many failures with the original algorithm.  Foremost among 
  140. these was the propensity for the unit to lose its center forward armor and 
  141. take severe internal damage while the left and right forward armor facings 
  142. were pristine.  The solution to this problem was for the unit to shorten the 
  143. amount it moved to save sufficient mobility to rotate after its motion.  (See 
  144. Figure 2)  This rotation would bring the strongest forward armor to face 
  145. the closest enemy unit.  Relative bearing and the integer values of the 
  146. forward armor were the parameters that enabled this change, which 
  147. typically tripled the survival of all units.  It especially allowed units with 
  148. short-range weapons to close to their effective ranges.  This algorithm 
  149. became known as the basic closure code.
  150.  
  151.  
  152. Self Assessment
  153. The modified algorithm still had major problems.  During a long closure, a 
  154. unit would loose all three forward armor facings, continue closing, and 
  155. take fatal internals.  The fix involved self assessment.  Before a unit 
  156. started maneuvers, it would evaluate the state of its forward armor, 
  157. internal systems, and ammunition.  If all three forward armor facings were 
  158. below minimum, half of any internal system was destroyed, or if 
  159. ammunition was gone, then the unit would declare itself to be unfit for 
  160. battle and flee.  It would turn its strongest rear armor toward the closest 
  161. enemy and move as far away as possible.  This is just a slightly modified 
  162. version of the basic closure code.  If the unit had a jump pack available, it 
  163. would jump as far away as possible.  It would choose not to shoot power 
  164. based weapons to save energy for mobility.  The parameters for this 
  165. change were simple integer numbers: armor, systems, and ammunition 
  166. counts.  This change increased the long term survivability of the Auto 
  167. units greatly.  After it, destroying a unit often required a long chase.  In 
  168. rolling terrain, enemy units would simply disappear when they were 
  169. seriously damaged.  
  170.  
  171. Battle Range
  172. At this point, Auto units were interesting but not threatening.  Their 
  173. maneuvers were highly predictable.  At point blank range a unit would 
  174. close to zero range and stop.  Since all motion in Bots is simultaneous, 
  175. human players would simply move forward and turn around, finding 
  176. themselves at near zero range facing the back of the Auto unit.  Fatal 
  177. internals for the Auto unit often soon followed.  For long-range units such 
  178. as mortars, and specific range units such as particle beam weapons,  
  179. continuos closure was especially counter-productive.  Mortar units have a 
  180. minimum range requirement, and care very little about range otherwise.  
  181. In the laser family, where closure improves damage, closure also gives 
  182. the advantage to the lightest and shortest ranged lasers.  The fix was to 
  183. establish a battle range (known as BRG) for each weapon type.  The 
  184. parameter used with BRG was range.
  185.  
  186. BRG numbers were tuned during play.  While many weapons benefit from 
  187. close range, BRG was picked to balance survivability and the ability to 
  188. inflict damage.  Long-range units would prefer to stay at range, denying 
  189. short-range units any fire.  If a unit found itself too close, it would back up 
  190. as much as it could.  Yet backing up costs twice as much as forward 
  191. motion.  BRG helped to keep the long-range support units out of trouble, 
  192. and it helped all units survive combat with a short-range unit.  Short-range 
  193. units were still too predictable and easy for human players to destroy.  
  194. BRG was the evolutionary step that set the stage for a major milestone in 
  195. Auto evolution.
  196.  
  197. The First Major Milestone Change: New Maneuver Code
  198. The problem with the maneuver code was predictability.  The new 
  199. maneuver code dealt with the answers to two questions:  "Where can a 
  200. unit go?"  and  "Where does a unit want to go?"  The first question is 
  201. answered by computing the mobility of a unit, which is based on its power 
  202. and mass.  The unit can get to roughly any point within a circle, centered 
  203. on the unit, of radius equal to the mobility of the unit.  When computing the 
  204. radius of the mobility circle, sufficient mobility is deducted from the radius 
  205. to provide for turns.  The second question is answered by BRG.  If the 
  206. target does not move, the most effective place to be is some place on a 
  207. circle, centered on the target, of radius BRG.  (See Figure 3)  If the two 
  208. circles do not intersect, the existing basic closure code is used.  If the 
  209. circles intersect, there are three possibilities.
  210.  
  211. The first possibility is shown in Figure 4.  This is the most dangerous case 
  212. for the target, and the best case for the attacker.  This situation is most 
  213. often seen when a high mobility unit carrying short ranged weapons 
  214. attacks.  The unit will pick a random point on the BRG circle, move to it, 
  215. and turn to face the target.  For the target to evade, it must either move far 
  216. enough to get out of range, or it must move behind the random point on the 
  217. BRG circle where the attacker will appear.  Neither of these evasions is 
  218. easy.  The first requires good mobility, and the second requires good luck.  
  219. If the target does move far enough away to deny weapons fire, the 
  220. attacker will have more power available to move in the next turn.  
  221.  
  222. The second possibility is shown in Figure 5.  This is a good case for any 
  223. attacker.  This situation is most often seen when a medium or high 
  224. mobility unit carrying medium-range weapons attacks.  The unit randomly 
  225. picks one of the two intersection points, moves to it, and turns to face the 
  226. target.  Only a target with more mobility than the attacker will be able to 
  227. out maneuver the attacker.  As Figure 5 moves toward Figure 4, the 
  228. attacker becomes nearly impossible to evade.  
  229.  
  230. The third case is shown in Figure 6.  The mobility circle is inside the BRG 
  231. circle, which means that the attacker is too close.  This is usually the 
  232. case when a low mobility unit carrying long-range weapons is closer than 
  233. desired to  an enemy unit.  Here the unit determines if it would get farther 
  234. away by backing up, or by turning away, moving forward, and turning again 
  235. to face the target.  It chooses the way that takes it farthest away and 
  236. executes that maneuver.
  237.  
  238. BRG and computed mobility, the parameters of the change, are combined 
  239. in an effective algorithm.  The effect of the first milestone change was 
  240. dramatic.  Attacking units were much more effective (fleeing units were 
  241. unaffected).  Human players could no longer destroy Auto units without 
  242. pause.  Close combat maneuvers became very dicey.  Novice players had 
  243. less than a 50% chance of winning a one-on-one duel.  In single combat, 
  244. Auto units played a solid, if uninspired, game and they never made stupid 
  245. errors.  
  246.  
  247. Initial Team Play: Communications
  248. The team play of Autos still lacked a great deal - they fought as a mob, 
  249. rather than as a team.  Any unit that could see no targets would pick a 
  250. random patrol point on the map and head toward it.  This scattering 
  251. behavior was good for finding hidden enemy units, but poor for fighting 
  252. enemy teams.  If one unit on a team was engaged, the rest of the team 
  253. would ignore the combat unless they too could see the target.  Evolution 
  254. continued, as Auto units learned basic communications skills.  A unit that 
  255. could see no targets would ask its team for targeting information.  The 
  256. other units (Aero, Auto, and Bots) on the same team would reply with the 
  257. map coordinates of the targets that they could see.  These coordinates 
  258. could be used the next turn to plot motion.  Units that did not require line-
  259. of-sight to fire, such as mortars, would fire blindly on the map coordinates 
  260. given.  The effects of this change were two-fold.  It allowed high mobility 
  261. units carrying short-ranged weapons to close upon enemy units that they 
  262. could not see.  This meant that once an enemy unit was spotted, all 
  263. unoccupied Autos would head toward it, even in rolling terrain.  The 
  264. second effect provided mortar teams with something productive to do.  
  265. Communicating map coordinates proved to be an effective change.  To 
  266. the enemy units, it meant to expect mortar fire whenever spotted by any 
  267. member of the Auto team.  A particularly nasty combination was to be 
  268. stalked by an unseen stealth unit that was broadcasting coordinates to its 
  269. mortar teammates.  This change tended to keep mobs of Autos together, 
  270. but they still fought as a mob.
  271.  
  272. The Second Major Milestone Change: Improved Team Play
  273. Targeting was still based on the closest enemy that could be fired at.  In 
  274. team play, a lone unit could distract part of a team of Autos and play Pied 
  275. Piper while the rest of the Piper's team destroyed the other part of the 
  276. Auto team.  The Piper might not survive, but while it was being destroyed, 
  277. multiple enemy units would be destroyed, tipping the battle against the 
  278. Autos.  The second milestone change increased team play.  Team play 
  279. was based on the concept of the team target.  The enemy unit that 
  280. appeared to be hurt the most would be designated as team target.  This 
  281. designation was based on the volume of fire an enemy had absorbed.  The 
  282. team target would always be the preferred target for motion control.  If the 
  283. team target was between the minimum and maximum effective range for 
  284. the weapons fired, it would be the preferred target for fire as well.  The 
  285. results were often devastating and occasionally quite strange.  The 
  286. devastating part stemmed from the fact that a single unit, often already 
  287. damaged, could now take all the mortar, long-range missile, autocannon, 
  288. and much of the short-range laser fire that an entire team could inflict.  
  289. The strange part would happen when an Auto unit would move directly 
  290. past and ignore a closer target in order to help destroy the team target.  
  291. But if the team target were not a viable target, each unit would fire as 
  292. before, usually at the closest target.
  293.  
  294. Mishaps in team play were now fatal.  Teams of experts were now doing 
  295. well to achieve a kill ratio of 2.5:1 in favor of the experts.  Novice teams 
  296. required two to five times numerical superiority to win.  The parameters 
  297. used had been developed in earlier stages of evolution.
  298.  
  299. Attack Jumps
  300. Evolution continued as details were refined to solve minor problems.  One 
  301. problem was that Autos would only use a jump pack to flee or to cross 
  302. water.  This meant that they would often have an unused jump pack at 
  303. reload time, when a new jump pack would be available.  The fix was 
  304. simple; units still carrying a jump pack that were near their reload time 
  305. would be free to jump to increase their mobility.  The parameter used was 
  306. the unit's turn counter, which already existed.  This change made it 
  307. dangerous to rely on predictions about the mobility of an Auto unit.  A fast 
  308. moving unit that had been moving four ranges per turn would suddenly 
  309. jump eight and move four more for a total of twelve ranges of motion when 
  310. only four were expected.
  311.  
  312. Dealing With Aeros
  313. The final changes involved dealing with Aeros.  Bots and Autos usually 
  314. move one to four ranges per turn.  Aeros need to move at least ten to 
  315. retain airspeed, and speeds of twenty to fifty are normal.  Normal altitudes 
  316. for Aeros typically run from eight to twenty ranges of altitude.  The first 
  317. problem Aeros created was that Autos would attempt to set up motion 
  318. based on an Aero target.  Since the motion algorithms are optimized for 
  319. non-moving targets, using an Aero to set up motion was ineffective for 
  320. units with a short BRG.  It was ineffective for units with a long BRG if the 
  321. Aero was close by, since the bearing of the Aero would change 
  322. dramatically.  Even if perfect predictive algorithms were available, only 
  323. units with a long BRG have sufficient range to hurt Aeros at altitude.  The 
  324. important changes were range based.  All units that had a BRG of 25 or 
  325. higher would prefer any visible enemy Aero to all other targets for fire and 
  326. motion.  Units with lower BRG would ignore Aeros when plotting motion, 
  327. but if an Aero was somehow in acceptable range, it would be the preferred 
  328. fire target.  At reload time, Autos remembered if they had seen any Aeros 
  329. since last reload and changed their hardpoint weapons mix to prefer anti-
  330. aircraft missiles.  The changes decreased the survivability of Aeros 
  331. greatly.  Aero targets were preferred even to team targets, often with the 
  332. same deadly results.  The much-maligned mortar units provided greatly 
  333. needed flak fire.  Other less popular long BRG units gained a new role.  
  334. Also, the advent of the stealth anti-aircraft missile battery eased the 
  335. problems ground units had with Aeros.
  336.  
  337. Future Evolution
  338. There are still several deficiencies with the Auto program.  Complex 
  339. terrain tends to mystify Autos, especially urban terrain and bridges.  An 
  340. Auto unit will occasionally present weak or down armor toward one enemy 
  341. while fighting another.  This single mindedness also shows up when a 
  342. damaged unit flees.  Motion directly away from the closest enemy, which 
  343. is always correct in one-on-one, can be fatal when intermixed with an 
  344. enemy team.
  345.  
  346. Observations About The Process
  347. Many observations are worth examining.  The first of these is that the 
  348. process of analysis and synthesis is regenerative.  The initial BRG 
  349. change set the stage for the first milestone change (maneuver code).  
  350. BRG also led to min/max range, which when coupled with 
  351. communications led to the second milestone change (team play).  Some 
  352. of the other analysis that went on made it possible and more probable that 
  353. algorithms could be generated to improve poor behavior.
  354.  
  355. Not as obvious in the paper is the fact that intensive testing helps drive 
  356. the process.  The entire evolutionary cycle mentioned above took place at 
  357. lunchtimes over the course of a year.  The testing allowed the author to 
  358. observe human behavior in order to model it, and it clearly showed any 
  359. deficiencies in the algorithms.
  360.  
  361. One very hopeful point is that simple methods often suffice.  The long 
  362. closure code and the code for flight is simple but has proven to be very 
  363. effective.  The early code, which had numerous deficiencies, was still 
  364. interesting and fun.  Between the first and second milestone changes, 
  365. there was, occasionally, the semblance of team behavior by default.  If a 
  366. given enemy unit was the best or only target available to a team, the entire 
  367. team fired upon it.  In rolling terrain this would be fatal as one unit 
  368. encountered groups of enemy units.
  369.  
  370. A final point is that the code is well behaved.  It is small, runs rapidly, and 
  371. is easy to follow.  The behavior control parts of the code do not require 
  372. any extensive calculations.  The code is short, with only two files.  In fact, 
  373. the Auto program has less source and a smaller executable than the Bots 
  374. program.  The increase in size from automation is more than offset by the 
  375. reduction in size gained by deleting the user interface.  The control flow of 
  376. the code is relatively easy to follow, and therefore easy to modify.
  377.  
  378.  
  379. Conclusions:
  380. The evolutionary method is a viable alternative to exploring AI 
  381. methodologies.  The method is universally available to programmers who 
  382. have sufficient time for repeated testing.  It is well suited to game 
  383. programs in which the computer and human players deal with the same 
  384. objects and information - - the programmer can model computer behavior 
  385. on successful human behavior.  The method fails when the programmer 
  386. cannot identify the keys to changing poor behavior and the default simple 
  387. methods are ineffective.  For the multiplayer, tactical combat games that 
  388. this author has written, the methods have produced effective code that is 
  389. fast, compact, and often pleasingly simple.
  390.  
  391.     TM UNIX is a trademark of AT&T Bell Laboratories.
  392.     TM Star Fleet Battles is a trademark of Amarillo Design Burea.
  393.